package com.hayato.gpstweet.controller.twitter;

import org.slim3.controller.Controller;
import org.slim3.controller.Navigation;

import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationContext;
import twitter4j.http.AccessToken;
import twitter4j.http.OAuthAuthorization;
import twitter4j.http.RequestToken;

import com.hayato.gpstweet.service.TwitterService;

public class AccessTokenController extends Controller {
    
    @Override
    public Navigation run() throws Exception {
        Configuration conf = ConfigurationContext.getInstance();
        // セッションからRequestTokenを取得します。
        RequestToken requestToken = sessionScope("RequestToken");
        // RequestTokenから認証前のAccessTokenを作成します。
        AccessToken accessToken = 
            new AccessToken(requestToken.getToken(),
                requestToken.getTokenSecret());
        OAuthAuthorization oauth = 
            new OAuthAuthorization(conf,
                TwitterService.consumerKey, TwitterService.consumerSecret,
                accessToken);
        // Twitterから送られるVerifierを使用して、認証されたAccessTokenを取得します。
        String verifier = requestScope("oauth_verifier");
        accessToken = oauth.getOAuthAccessToken(verifier);
        requestScope("accessToken", accessToken);
        return forward("accessToken.jsp");
    }
}
